package com.lefeng.cockpit.datax.service;

import com.didiglobal.logi.security.common.PagingData;
import com.didiglobal.logi.security.common.Result;
import com.lefeng.cockpit.common.bean.dto.datasource.DataSourceDTO;
import com.lefeng.cockpit.common.bean.po.datasource.DataSourcePO;
import com.lefeng.cockpit.common.bean.vo.datasource.DataSourceVO;

import java.util.List;

/**
 * 数据源配置表服务接口
 */
public interface DataSourceService {
    /**
     * 测试数据源
     */
    Boolean dataSourceTest(DataSourceDTO dataSourceDTO);


    /**
     * 分页获取数据源信息
     *
     * @param queryDTO 条件信息
     * @return 数据源信息list
     */
    PagingData<DataSourceVO> pagingDataSource(DataSourceDTO queryDTO);


    /**
     * 新增数据源
     *
     * @param dataSourceDTO 数据源
     * @return 成功 true
     */
    Result<Integer> addDataSource(DataSourceDTO dataSourceDTO);

    /**
     * 删除数据源
     *
     * @param id 数据源id
     * @return 成功 true  失败 false
     */
    Result<Void> delDataSource(Integer id);

    /**
     * 使能配置
     *
     * @param id     数据源id
     * @param status 状态
     * @return 成功 true  失败 false
     */
    Result<Void> switchDataSource(Integer id, Integer status);

    /**
     * 编辑配置
     *
     * @param dataSourceDTO 数据源内容
     * @return 成功 true  失败 false
     */
    Result<Void> editDataSource(DataSourceDTO dataSourceDTO);

    /**
     * 获取所有数据类型
     *
     * @return 类型名称
     */
    List<String> listDataSourceTypes();

    /**
     * 克隆数据源
     *
     * @param dataSourceDTO 数据源
     * @return 成功 true
     */
    Result<Integer> cloneDataSource(DataSourceDTO dataSourceDTO);

    /**
     * 查询所有数据源列表
     */
    Result<List<DataSourcePO>> getAllDataSource(DataSourceDTO dataSourceDTO);
}